package com.wgz.medicalmanagement.service;

import org.springframework.data.domain.Page;

import com.wgz.medicalmanagement.domain.dto.PatientDTO;
import com.wgz.medicalmanagement.domain.dto.PatientQueryDTO;
import com.wgz.medicalmanagement.domain.entity.Patient;

/**
 * 患者管理服务接口
 */
public interface PatientService {

    /**
     * 获取患者列表
     * 
     * @param queryDTO 查询条件
     * @return 患者分页列表
     */
    Page<PatientDTO> getPatientList(PatientQueryDTO queryDTO);
    
    /**
     * 获取患者详情
     * 
     * @param id 患者ID
     * @return 患者详情
     */
    PatientDTO getPatientDetail(Long id);
    
    /**
     * 添加患者
     * 
     * @param patientDTO 患者信息
     * @return 添加后的患者信息
     */
    PatientDTO addPatient(PatientDTO patientDTO);
    
    /**
     * 更新患者信息
     * 
     * @param id 患者ID
     * @param patientDTO 患者信息
     * @return 更新后的患者信息
     */
    PatientDTO updatePatient(Long id, PatientDTO patientDTO);
    
    /**
     * 删除患者
     * 
     * @param id 患者ID
     */
    void deletePatient(Long id);
    
    /**
     * 根据实体构建DTO
     * 
     * @param patient 患者实体
     * @return 患者DTO
     */
    PatientDTO buildPatientDTO(Patient patient);
    
    /**
     * 根据DTO构建实体
     * 
     * @param patientDTO 患者DTO
     * @return 患者实体
     */
    Patient buildPatientEntity(PatientDTO patientDTO);
} 